package com.simon.lease.web.admin.controller.apartment;

import com.simon.lease.common.result.Result;
import com.simon.lease.model.entity.PaymentType;
import com.simon.lease.web.admin.service.PaymentTypeService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Tag(name = "支付方式管理")   // 它的作用是对类或接口进行描述，在生成的 API 文档中显示为模块名称（这里是“支付方式管理”），便于分类和展示

/*
*   这是 Spring 框架中的组合注解，结合了 @Controller 和 @ResponseBody。
    表示该类中的每个方法返回的对象都转变为 JSON 数据，而不是默认的 HTML 页面。
* */
@RestController
@RequestMapping("/admin/payment")
public class PaymentTypeController {

    @Autowired
    PaymentTypeService paymentTypeService;

    // 查询所有支付方式
    @Operation(summary = "查询所有支付方式")
    @GetMapping("list")
    public Result<List<PaymentType>> listPaymentType() {
        List<PaymentType> list = paymentTypeService.list();
        return Result.ok(list);
    }

    // 根据 ID 删除支付方式
    @Operation(summary = "根据 ID 删除支付方式")
    @DeleteMapping("deleteById")
    public Result deleteById(@RequestParam Long id) {
        paymentTypeService.removeById(id);
        return Result.ok();
    }

    // 保存或更新支付方式
    @Operation(summary = "保存或更新支付方式")
    @DeleteMapping("saveOrUpdate")
    public Result saveOrUpdate(@RequestBody PaymentType paymentType) {
        paymentTypeService.saveOrUpdate(paymentType);
        return Result.ok();
    }
}
